package embeded;

import java.io.Serializable;
import java.rmi.Remote;
import java.rmi.RemoteException;

import javax.swing.JTextArea;

import interfaces.SubscriberPublisherManager;
import topic.Topic;
import agent.AgentDCS;
import data.DataObject;

public interface EmbededObject extends Remote, Serializable{
	void broadcast() throws RemoteException;
	void registerEmbededObjects(EmbededObject embededObject, Topic topic) throws RemoteException;
	boolean addTopic(String topicParentName, Topic topic) throws RemoteException;
	void setData(String topicFullName, DataObject data) throws RemoteException;
	DataObject getData(String topicFullName) throws RemoteException;
	Topic getRootTopic() throws RemoteException;
	Topic getAllTopic() throws RemoteException;
	void removeTopic(String topicFullName) throws RemoteException;
	Participant addParticipant(String topicFullName) throws RemoteException;
	void removeParticipant(String topicFullName) throws RemoteException;
	SubscriberPublisherManager getInterfaceManager() throws RemoteException;
	void showFrame() throws RemoteException;
	void refreshParticipants(String participantName) throws RemoteException;
	
	boolean createTopic(String topicParentName, String topicName) throws RemoteException;
	
	AgentDCS activateAgent() throws RemoteException;
	AgentDCS getAgent() throws RemoteException;
	
	boolean equalsEmbeded(EmbededObject embeded) throws RemoteException;
	boolean stopAll() throws RemoteException;
	
	String getName() throws RemoteException;
	int getParticipantCount() throws RemoteException;
	int getNeighborCount() throws RemoteException;
	
	JTextArea getTextfield() throws RemoteException;
}